resource "aws_route53_record"
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record
gpt-5.icon
Amazon Route 53 の DNS レコードを Terraform で管理するときに使うリソース
基本構造
code:hcl(rb)
resource "aws_route53_record" "example" {
zone_id = aws_route53_zone.primary.zone_id # レコードを作成するホストゾーンID
name = "www.example.com" # レコード名(サブドメインなど)
type = "A" # レコードタイプ (A, CNAME, MX, etc.)
ttl = 300 # TTL (alias の場合は不要)
records = "1.2.3.4" # 設定する値
}
zone_id: 対象のホストゾーン(Route53ゾーン)のID
name: レコード名。完全修飾ドメイン名 (FQDN) または相対名を指定可能
type: DNS レコードのタイプ(A, AAAA, CNAME, TXT など)
ttl: 非 alias レコードの TTL(秒単位)
records: 値のリスト(IP、ドメイン、TXT 文字列など)
代表的な使い方
1. シンプルな A レコード
Elastic IP (EIP) の IP アドレスを使ってドメインを解決させる例。
code:hcl(rb)
resource "aws_route53_record" "www" {
zone_id = aws_route53_zone.primary.zone_id
name = "www.example.com"
type = "A"
ttl = 300
records = aws_eip.lb.public_ip
}
2. 加重ルーティング (Weighted Routing)
複数レコードをトラフィック比率で振り分ける。
例: dev へ 10%、live へ 90%
code:hcl(rb)
resource "aws_route53_record" "www-dev" {
zone_id = aws_route53_zone.primary.zone_id
name = "www"
type = "CNAME"
ttl = 5
weighted_routing_policy {
weight = 10
}
set_identifier = "dev"
records = "dev.example.com"
}
3. ジオプロキシミティ (Geoproximity)
ユーザの位置情報(緯度経度や AWS リージョン)に基づきルーティング。
code:hcl(rb)
resource "aws_route53_record" "www" {
zone_id = aws_route53_zone.primary.zone_id
name = "www.example.com"
type = "CNAME"
ttl = 300
geoproximity_routing_policy {
coordinates {
latitude = "49.22"
longitude = "-74.01"
}
}
set_identifier = "dev"
records = "dev.example.com"
}
4. Alias レコード
ELB や CloudFront、Global Accelerator など AWS リソースを直接指す。
TTL は固定 60 秒なので ttl は不要。
code:hcl(rb)
resource "aws_route53_record" "www" {
zone_id = aws_route53_zone.primary.zone_id
name = "example.com"
type = "A"
alias {
name = aws_elb.main.dns_name
zone_id = aws_elb.main.zone_id
evaluate_target_health = true
}
}